//Builder.h
#ifndef _BUILDER_H_ 
#define _BUILDER_H_
#include "../../stdafx.h"

class Product;
class Builder 
{ 
public: 
	virtual ~Builder();
	virtual void BuildPartA(const string& buildPara) = 0;
	virtual void BuildPartB(const string& buildPara) = 0;
	virtual void BuildPartC(const string& buildPara) = 0;
	virtual Product* GetProduct() = 0;
protected: 
	Builder();

private:
};

class ConcreteBuilder:public Builder 
{ 
public: 
	ConcreteBuilder();
	~ConcreteBuilder();
	void BuildPartA(const string& buildPara);
	void BuildPartB(const string& buildPara);
	void BuildPartC(const string& buildPara);
	Product* GetProduct();
protected: 
private:
	Product *m_pProduct;
};

#endif //~_BUILDER_H_